package com.it.base.arithmetic.base.dm.single;

/**
 * 第一种单例，简单说一下单例的特点，
 * 构造函数私有化，提供一个全局能够获取到实例的方法
 * 双检锁/双重校验锁
 */
public class Single04 {

    private  volatile  static Single04 instance;

    public  static synchronized Single04 getInstance(){
        if(instance==null){
            synchronized (Single04.class) {
                if (instance == null) {
                    instance = new Single04();
                }
            }
        }
        return instance;

    }
    //所有的单例模式都必须构造函数私有化,因为私有化能够防止通过new的方式来生成对象,达到全局只有一个实例的目的
    private Single04(){

    }
}
